Skip to content

Conversation

@alex-vance
Copy link

Summary

This PR fixes a build failure that occurs when using Voltra with Expo projects that use the .icon format (Xcode 16+ Icon Composer) for app icons.

Fixes #39

Problem

When an Expo project sets its app icon using the modern .icon format, Expo configures ASSETCATALOG_COMPILER_APPICON_NAME at the project level. This build setting gets inherited by the widget extension target that Voltra creates. Since the extension's asset catalog doesn't contain this icon, the build fails with:

None of the input catalogs contained a matching app icon set named "AppName"

Solution

Explicitly set ASSETCATALOG_COMPILER_APPICON_NAME = "" in the widget extension's build settings. This overrides the inherited project-level value and tells Xcode not to compile any app icon for this target.

Why This Is Safe

  • Widget extensions never display app icons - Live Activities appear on the lock screen and Dynamic Island with custom UI, not app icons. Home Screen Widgets similarly render custom SwiftUI content.
  • This is the canonical approach - Setting to empty string is Apple's recommended way to opt-out of app icon compilation for targets that don't need it.
  • Follows existing patterns - This is the same approach Voltra already uses for other build settings like APPLICATION_EXTENSION_API_ONLY and CODE_SIGN_ENTITLEMENTS.
  • No negative impact for users without the issue - Users using traditional .appiconset format will not be affected; the empty string simply ensures no icon compilation happens (which is correct for extensions).

Testing

  • Verified fix resolves build failure with .icon format
  • All existing tests pass (npm test - 186 tests)
  • Linting passes (npm run lint:libOnly)
  • Changed file passes formatting check

Workaround Reference

For users who need an immediate fix before this PR is merged, I've documented a workaround using a custom Expo config plugin in issue #39.

@vercel
Copy link

vercel bot commented Jan 30, 2026

@alex-vance is attempting to deploy a commit to the Callstack Team on Vercel.

A member of the Team first needs to authorize it.

…ettings

Widget extensions (Live Activities, Home Screen Widgets) don't display app icons.
When the parent Expo project sets ASSETCATALOG_COMPILER_APPICON_NAME at the
project level (especially when using the .icon format from Xcode 16+), this
setting gets inherited by the widget extension target. Since the extension's
asset catalog doesn't contain the icon, the build fails with:

  "None of the input catalogs contained a matching app icon set named 'X'"

This fix explicitly sets ASSETCATALOG_COMPILER_APPICON_NAME = "" on the widget
extension target, which overrides the inherited value and tells Xcode not to
compile any app icon for this target.

This is safe because:
- Widget extensions never display app icons in any iOS context
- Setting to empty string is the canonical way to opt-out of icon compilation
- This follows the same pattern Voltra already uses for other build settings
  (e.g., APPLICATION_EXTENSION_API_ONLY, CODE_SIGN_ENTITLEMENTS)

Fixes callstackincubator#39
@alex-vance alex-vance force-pushed the fix/widget-extension-app-icon-inheritance branch from aa567f8 to f38b276 Compare January 30, 2026 22:24
@alex-vance
Copy link
Author

@V3RON Let me know if you have any questions. I've tested this build locally and it not lets me keep my Icon Composer file and no longer need the additional plugin that I called out in #39

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Live Activity build fails: "None of the input catalogs contained a matching app icon set named 'app'"

1 participant